//
// Created by 原帅 on 2022/10/1.
//

#ifndef R_RPROCIF_H
#define R_RPROCIF_H

class RProcRegisterIF;

class RProcIF {
public:

    RProcIF();

    RProcIF(RProcRegisterIF& rProcRegisterIf);

    /**
     * 用来定义程序的执行功能， 用户必须定义重新此函数，如果处理中返回了失败错误码，会传入fail函数中进行处理
     * @return 返回值为非0时，会进入fail()函数进行进一步处理，并将返回值作为参数传入fail()
     */
    virtual int process()=0;

    /**
     * initProcess 返回值非0时，执行此函数。用户可以重新定义此函数，处理process的错误
     * @param iProcFailRet 传入的是process 的返回值
     * @return 返回非0时，程序将终止执行
     */
    virtual int fail(int iProcFailRet);

    virtual int registerProc(RProcRegisterIF& rProcRegisterIf);

};


#endif //R_RPROCIF_H
